package xyz.lwm.lazycat.beans;

/**
 * <h3>Bean 生命周期管理</h3>
 * <p>用于 Bean 生命周期扩展</p>
 * <pre>{@code
 * @Bean
 * public class MyBean implements BeanLifecycle {
 *     @Override
 *     public void postConstruct() {
 *         System.out.println("postConstruct");
 *     }
 *
 *     @Override
 *     public void postAllConstruct() {
 *         System.out.println("postAllConstruct");
 *     }
 *
 *     @Override
 *     public void preDestroy() {
 *         System.out.println("preDestroy");
 *     }
 * }
 * }</pre>
 * <p>说明:</p>
 * <pre>
 * 1. postConstruct 在 process 中执行;
 * 2. postAllConstruct 在所有 bean 完成 process 后才执行;
 * </pre>
 * @author lwm
 */
public interface BeanLifecycle {

    /**
     * 当前 bean 初始化后执行
     */
    default void postConstruct() {}

    /**
     * 所有 bean 初始化后执行
     */
    default void postAllConstruct() {}

    /**
     * 当前 bean 销毁前执行
     */
    default void preDestroy() {}

}
